<template>
  <basic-container>
    <el-row :span="24">
      <el-col :md="4">
        <div class="tree-position">
          <avue-tree
            :option="treeOption"
            :data="treeData"
            @node-click="nodeClick"/>
        </div>
      </el-col>
      <el-col :md="20">
        <el-tabs v-model="materialType" @tab-click="handleClick">
          <el-tab-pane name="image">
            <span slot="label"><i class="el-icon-picture"></i> 图片</span>
            <div class="add_but">
              <el-upload
                :action="actionUrl"
                :headers="headers"
                multiple
                :limit="1"
                :on-success="handleUploadSuccess"
                :file-list="fileList"
                :before-upload="beforeImageUpload"
                :data="uploadData">
                <el-button v-if="permissions.mp_wxmaterial_add" size="mini" type="primary">点击上传</el-button>
                <div slot="tip" class="el-upload__tip">
                  支持bmp/png/jpeg/jpg/gif格式，大小不超过2M
                </div>
              </el-upload>
            </div>
            <div class="waterfall" v-loading="tableLoading">
              <div class="waterfall-item" v-for="item in tableData" :key='item.id'>
                <a target="_blank" :href="item.url">
                  <img class="material-img" :src="item.url">
                  <div class="item-name">{{item.name}}</div>
                </a>
                <el-row class="ope-row">
                  <el-button v-if="permissions.mp_wxmaterial_del" type="danger" icon="el-icon-delete" circle @click="delMaterial(item)"></el-button>
                </el-row>
              </div>
            </div>
            <div v-if="tableData.length <=0 && !tableLoading" class="el-table__empty-block">
              <span class="el-table__empty-text">暂无数据</span>
            </div>
            <el-pagination
              @size-change="sizeChange"
              @current-change="currentChange"
              :current-page.sync="page.currentPage"
              :page-sizes="[10, 20]"
              :page-size="page.pageSize"
              layout="total, sizes, prev, pager, next, jumper"
              :total="page.total"
              class="pagination"
            >
            </el-pagination>
          </el-tab-pane>
          <el-tab-pane name="voice">
            <span slot="label"><i class="el-icon-microphone"></i> 语音</span>
            <div class="add_but">
              <el-upload
                :action="actionUrl"
                :headers="headers"
                multiple
                :limit="1"
                :on-success="handleUploadSuccess"
                :file-list="fileList"
                :before-upload="beforeVoiceUpload"
                :data="uploadData">
                <el-button v-if="permissions.mp_wxmaterial_add" size="mini" type="primary">点击上传</el-button>
                <div slot="tip" class="el-upload__tip">
                  格式支持mp3/wma/wav/amr，文件大小不超过2M，播放长度不超过60s
                </div>
              </el-upload>
            </div>
            <el-table
              :data="tableData"
              stripe
              border
              v-loading="tableLoading">
              <el-table-column
                prop="mediaId"
                label="media_id">
              </el-table-column>
              <el-table-column
                prop="name"
                label="名称">
              </el-table-column>
              <el-table-column
                prop="updateTime"
                label="更新时间">
              </el-table-column>
              <el-table-column
                fixed="right"
                label="操作">
                <template slot-scope="scope">
                  <el-button type="text"
                             icon="el-icon-download"
                             size="small"
                             plain
                             @click="handleDown(scope.row)">下载
                  </el-button>
                  <el-button type="text"
                             v-if="permissions.mp_wxmaterial_del"
                             icon="el-icon-delete"
                             size="small"
                             plain
                             @click="delMaterial(scope.row)">删除
                  </el-button>
                </template>
              </el-table-column>
            </el-table>
            <el-pagination
              @size-change="sizeChange"
              @current-change="currentChange"
              :current-page.sync="page.currentPage"
              :page-sizes="[10, 20]"
              :page-size="page.pageSize"
              layout="total, sizes, prev, pager, next, jumper"
              :total="page.total"
              class="pagination"
            >
            </el-pagination>
          </el-tab-pane>
          <el-tab-pane name="video">
            <span slot="label"><i class="el-icon-video-play"></i> 视频</span>
            <div class="add_but">
              <el-button v-if="permissions.mp_wxmaterial_add" size="mini" type="primary" @click="handleAddVideo">新建</el-button>
            </div>
            <el-dialog title="新建视频" :visible.sync="dialogVideoVisible" v-loading="addMaterialLoading">
              <el-upload
                ref="uploadVideo"
                :action="actionUrl"
                :headers="headers"
                multiple
                :limit="1"
                :on-success="handleUploadSuccess"
                :file-list="fileList"
                :before-upload="beforeVideoUpload"
                :auto-upload="false"
                :data="uploadData">
                <el-button  slot="trigger" size="mini" type="primary">选择视频</el-button>
                <div class="el-upload__tip">
                  格式支持MP4，文件大小不超过10MB
                </div>
              </el-upload>
              <el-form :model="uploadData"
                       :rules="uploadRules"
                       ref="uploadForm">
                <el-form-item label="标题" prop="title">
                  <el-input v-model="uploadData.title" placeholder="标题将展示在相关播放页面，建议填写清晰、准确、生动的标题"></el-input>
                </el-form-item>
                <el-form-item label="描述" prop="introduction">
                  <el-input :rows="3" type="textarea" v-model="uploadData.introduction"
                            placeholder="介绍语将展示在相关播放页面，建议填写简洁明确、有信息量的内容"></el-input>
                </el-form-item>
              </el-form>
              <div slot="footer" class="dialog-footer">
                <el-button @click="dialogVideoVisible = false">取 消</el-button>
                <el-button v-if="permissions.mp_wxmaterial_add" type="primary" @click="subVideo">提 交</el-button>
              </div>
            </el-dialog>
            <el-table
              :data="tableData"
              stripe
              border
              v-loading="tableLoading">
              <el-table-column
                prop="mediaId"
                label="media_id">
              </el-table-column>
              <el-table-column
                prop="name"
                label="名称">
              </el-table-column>
              <el-table-column
                prop="updateTime"
                label="更新时间">
              </el-table-column>
              <el-table-column
                fixed="right"
                label="操作">
                <template slot-scope="scope">
                  <el-button type="text"
                             icon="el-icon-view"
                             size="small"
                             plain
                             @click="handleInfo(scope.row)">查看
                  </el-button>
                  <el-button type="text"
                             v-if="permissions.mp_wxmaterial_del"
                             icon="el-icon-delete"
                             size="small"
                             plain
                             @click="delMaterial(scope.row)">删除
                  </el-button>
                </template>
              </el-table-column>
            </el-table>
            <el-pagination
              @size-change="sizeChange"
              @current-change="currentChange"
              :current-page.sync="page.currentPage"
              :page-sizes="[10, 20]"
              :page-size="page.pageSize"
              layout="total, sizes, prev, pager, next, jumper"
              :total="page.total"
              class="pagination"
            >
            </el-pagination>
          </el-tab-pane>
          <el-tab-pane name="news">
            <span slot="label"><i class="el-icon-news"></i> 图文</span>
            <div class="add_but">
              <el-button type="primary"
                         v-if="permissions.mp_wxmaterial_add"
                         @click="handleAddNews"
                         size="mini">新 增
              </el-button>
            </div>
            <el-dialog :title="operateMaterial=='add'?'新建图文':'修改图文'"
                       :before-close="dialogNewsClose"
                       :close-on-click-modal="false"
                       :visible.sync="dialogNewsVisible"
                       width="80%"
                       top="20px">
              <div class="left">
                <div class="select-item">
                  <div v-for="(news, index) in articlesAdd" :key='news.id'>
                    <div class="news-main father" v-if="index==0" :class="{'activeAddNews': isActiveAddNews == index}"
                         @click="activeNews(index)">
                      <div class="news-content">
                        <img class="material-img" v-if="news.thumbUrl" :src="news.thumbUrl"/>
                        <div class="news-content-title">{{news.title}}</div>
                      </div>
                      <div class="child" v-if="articlesAdd.length>1">
                        <el-button type="mini" icon="el-icon-sort-down" @click="downNews(index)">下移</el-button>
                        <el-button v-if="operateMaterial=='add'" type="mini" icon="el-icon-delete"
                                   @click="minusNews(index)">删除
                        </el-button>
                      </div>
                    </div>
                    <div class="news-main-item father" v-if="index>0"
                         :class="{'activeAddNews': isActiveAddNews == index}"
                         @click="activeNews(index)">
                      <div class="news-content-item">
                        <div class="news-content-item-title ">{{news.title}}</div>
                        <div class="news-content-item-img">
                          <img class="material-img" v-if="news.thumbUrl" :src="news.thumbUrl" height="100%"/>
                        </div>
                      </div>
                      <div class="child">
                        <el-button v-if="articlesAdd.length > index+1" type="mini" icon="el-icon-sort-down"
                                   @click="downNews(index)">下移
                        </el-button>
                        <el-button type="mini" icon="el-icon-sort-up" @click="upNews(index)">上移</el-button>
                        <el-button v-if="operateMaterial=='add'" type="mini" icon="el-icon-delete"
                                   @click="minusNews(index)">删除
                        </el-button>
                      </div>
                    </div>
                  </div>
                  <div class="news-main-plus" @click="plusNews" v-if="articlesAdd.length<8 && operateMaterial=='add'">
                    <i class="el-icon-circle-plus icon-plus"></i>
                  </div>
                </div>
              </div>
              <div class="right" v-loading="addMaterialLoading">
                <!--富文本编辑器组件-->
                <el-row>
                  <WxEditor v-model="articlesAdd[isActiveAddNews].content" :uploadData="uploadData"
                            v-if="hackResetEditor"/>
                </el-row>
                <br><br><br><br>
                <div class="input-tt">封面和摘要：</div>
                <div>
                  <div class="thumb-div">
                    <img class="material-img" v-if="articlesAdd[isActiveAddNews].thumbUrl"
                         :src="articlesAdd[isActiveAddNews].thumbUrl"
                         :class="isActiveAddNews == 0 ? 'avatar':'avatar1'">
                    <i v-else class="el-icon-plus avatar-uploader-icon"
                       :class="isActiveAddNews == 0 ? 'avatar':'avatar1'"></i>
                    <div class="thumb-but">
                      <el-upload
                        :action="actionUrl"
                        :headers="headers"
                        multiple
                        :limit="1"
                        :on-success="handleUploadSuccess"
                        :file-list="fileList"
                        :before-upload="beforeThumbImageUpload"
                        :data="uploadData">
                        <el-button slot="trigger" size="mini" type="primary">本地上传</el-button>
                        <el-button size="mini" type="primary" @click="openMaterial" style="margin-left: 5px">素材库选择
                        </el-button>
                        <div slot="tip" class="el-upload__tip">支持bmp/png/jpeg/jpg/gif格式，大小不超过2M</div>
                      </el-upload>
                    </div>
                  </div>
                  <el-dialog title="选择图片" :visible.sync="dialogImageVisible" width="80%" append-to-body>
                    <WxMaterialSelect :objData="{repType:'image',appId: checkAppId}"
                                      @selectMaterial="selectMaterial"></WxMaterialSelect>
                  </el-dialog>
                  <el-input :rows="8" type="textarea" v-model="articlesAdd[isActiveAddNews].digest" placeholder="请输入摘要"
                            class="digest" maxlength="120"></el-input>
                </div>
                <div class="input-tt">标题：</div>
                <el-input v-model="articlesAdd[isActiveAddNews].title" placeholder="请输入标题"></el-input>
                <div class="input-tt">作者：</div>
                <el-input v-model="articlesAdd[isActiveAddNews].author" placeholder="请输入作者"></el-input>
                <div class="input-tt">原文地址：</div>
                <el-input v-model="articlesAdd[isActiveAddNews].contentSourceUrl" placeholder="请输入原文地址"></el-input>
              </div>
              <div slot="footer" class="dialog-footer">
                <el-button @click="dialogNewsVisible = false">取 消</el-button>
                <el-button v-if="permissions.mp_wxmaterial_add" type="primary" @click="subNews">提 交</el-button>
              </div>
            </el-dialog>
            <div class="waterfall" v-loading="tableLoading">
              <div v-if="item.content && item.content.articles" class="waterfall-item" v-for="item in tableData"
                   :key='item.id'>
                <WxNews :objData="item.content.articles"></WxNews>
                <el-row class="ope-row">
                  <el-button type="primary" icon="el-icon-edit" circle @click="handleEditNews(item)"></el-button>
                  <el-button type="danger" icon="el-icon-delete" circle @click="delMaterial(item)"></el-button>
                </el-row>
              </div>
            </div>
            <div v-if="tableData.length <=0 && !tableLoading" class="el-table__empty-block">
              <span class="el-table__empty-text">暂无数据</span>
            </div>
            <el-pagination
              @size-change="sizeChange"
              @current-change="currentChange"
              :current-page.sync="page.currentPage"
              :page-sizes="[10, 20]"
              :page-size="page.pageSize"
              layout="total, sizes, prev, pager, next, jumper"
              :total="page.total"
              class="pagination">
            </el-pagination>
          </el-tab-pane>
        </el-tabs>
      </el-col>
    </el-row>
  </basic-container>
</template>

<script>
  import {addObj, delObj, getMaterialOther, getMaterialVideo, getPage, materialNewsUpdate} from '@/api/mp/wxmaterial'
  import {fetchAccountList} from '@/api/mp/wxaccount'
  import WxEditor from '@/components/wechat/WxEditor'
  import WxNews from '@/components/wechat/WxNews'
  import WxMaterialSelect from '@/components/wechat/WxMaterialSelect'
  import store from '@/store'
  import { mapGetters } from 'vuex'

  export default {
    name: 'wxmaterial',
    components: {
      WxEditor,
      WxNews,
      WxMaterialSelect
    },
    data() {
      return {
        treeOption: {
          nodeKey: 'id',
          addBtn: false,
          menu: false,
          props: {
            labelText: '标题',
            label: 'name',
            value: 'appid',
            children: 'children'
          }
        },
        treeData: [],
        checkAppId: undefined,
        materialType: 'image',
        tableData: [],
        page: {
          total: 0, // 总页数
          currentPage: 1, // 当前页数
          pageSize: 10 // 每页显示多少条
        },
        page1: {
          total: 0, // 总页数
          currentPage: 1, // 当前页数
          pageSize: 10 // 每页显示多少条
        },
        tableLoading: false,
        actionUrl: '/mp-service/wxmaterial/materialFileUpload',
        headers: {
          Authorization: 'Bearer ' + store.getters.access_token
        },
        fileList: [],
        dialogVideoVisible: false,
        dialogNewsVisible: false,
        addMaterialLoading: false,
        uploadData: {
          "mediaType": 'image',
          "title": '',
          "introduction": '',
          'appId': ''
        },
        uploadRules: {
          title: [
            {required: true, message: '请输入标题', trigger: 'blur'}
          ],
          introduction: [
            {required: true, message: '请输入描述', trigger: 'blur'}
          ],
        },
        articlesAdd: [
          {
            "title": '',
            "thumbMediaId": '',
            "author": '',
            "digest": '',
            "showCoverPic": '',
            "content": '',
            "contentSourceUrl": '',
            "needOpenComment": '',
            "onlyFansCanComment": '',
            "thumbUrl": ''
          }
        ],
        isActiveAddNews: 0,
        dialogImageVisible: false,
        imageListData: [],
        tableLoading1: false,
        operateMaterial: 'add',
        articlesMediaId: '',
        hackResetEditor: false
      }
    },
    computed: {
      ...mapGetters(['permissions']),
    },
    created() {
      this.getAccountList()
    },
    methods: {
      nodeClick(data) {
        this.checkAppId = data.appid
        this.uploadData.appId = data.appid
        this.getPage(this.page)
      },
      getAccountList() {
        fetchAccountList().then(response => {
          this.treeData = response.data.data
          // 默认选中第一个
          if (this.treeData.length > 0) {
            this.nodeClick(this.treeData[0])
          }
        })
      },
      dialogNewsClose(done) {
        this.$confirm('修改内容可能还未保存，确定关闭吗?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          this.hackResetEditor = false//销毁组件
          this.$nextTick(() => {
            this.hackResetEditor = true//重建组件
          })
          this.isActiveAddNews = 0
          done()
        }).catch(() => {
        })
      },
      downNews(index) {
        let temp = this.articlesAdd[index]
        this.articlesAdd[index] = this.articlesAdd[index + 1]
        this.articlesAdd[index + 1] = temp
        this.isActiveAddNews = index + 1
      },
      upNews(index) {
        let temp = this.articlesAdd[index]
        this.articlesAdd[index] = this.articlesAdd[index - 1]
        this.articlesAdd[index - 1] = temp
        this.isActiveAddNews = index - 1
      },
      getPage1() {
        this.tableLoading1 = true
        getPage({
          current: this.page1.currentPage,
          size: this.page1.pageSize,
          type: 'image',
          appId: this.checkAppId
        }).then(response => {
          this.tableLoading1 = false
          this.imageListData = response.data.data.items
          this.page1.total = response.data.data.totalCount
        }).catch(() => {
          this.tableLoading1 = false
        })
      },
      selectMaterial(item) {
        this.dialogImageVisible = false
        this.articlesAdd[this.isActiveAddNews].thumbMediaId = item.mediaId
        this.articlesAdd[this.isActiveAddNews].thumbUrl = item.url
      },
      openMaterial() {
        this.imageListData = null
        this.page1.currentPage = 1
        this.getPage1()
        this.dialogImageVisible = true
      },
      activeNews(index) {
        this.hackResetEditor = false//销毁组件
        this.$nextTick(() => {
          this.hackResetEditor = true//重建组件
        })
        this.isActiveAddNews = index
      },
      minusNews(index) {
        this.$confirm('确定删除该图文吗?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          this.articlesAdd.splice(index, 1);
          if (this.isActiveAddNews == index) {
            this.isActiveAddNews = 0
          }
        }).catch(() => {
        })
      },
      plusNews() {
        this.articlesAdd.push(
          {
            "title": '',
            "thumbMediaId": '',
            "author": '',
            "digest": '',
            "showCoverPic": '',
            "content": '',
            "contentSourceUrl": '',
            "needOpenComment": '',
            "onlyFansCanComment": '',
            "thumbUrl": ''
          }
        )
        this.isActiveAddNews = this.articlesAdd.length - 1
      },
      handleInfo(row) {
        this.tableLoading = true
        getMaterialVideo({
          mediaId: row.mediaId,
          appId: this.checkAppId
        }).then((response) => {
          this.tableLoading = false
          let downUrl = response.data.data.downUrl
          window.open(downUrl, '_blank');
        }).catch(() => {
          this.tableLoading = false
        })
      },
      handleDown(row) {
        this.tableLoading = true
        getMaterialOther({
          mediaId: row.mediaId,
          fileName: row.name,
          appId: this.checkAppId
        }).then(response => {
          this.tableLoading = false
          let url = window.URL.createObjectURL(new Blob([response.data]))
          let link = document.createElement('a')
          link.style.display = 'none'
          link.href = url
          link.setAttribute('download', row.name)
          document.body.appendChild(link)
          link.click()
        }).catch(() => {
          this.tableLoading = false
        })
      },
      subNews() {
        this.addMaterialLoading = true
        if (this.operateMaterial == 'add') {
          addObj({
            articles: this.articlesAdd,
            appId: this.checkAppId
          }).then(response => {
            this.addMaterialLoading = false
            this.dialogNewsVisible = false
            this.isActiveAddNews = 0
            this.articlesAdd = [
              {
                "title": '',
                "thumbMediaId": '',
                "author": '',
                "digest": '',
                "showCoverPic": '',
                "content": '',
                "contentSourceUrl": '',
                "needOpenComment": '',
                "onlyFansCanComment": '',
                "thumbUrl": ''
              }
            ]
            this.page.currentPage = 1
            this.getPage(this.page)
          }).catch(() => {
            this.addMaterialLoading = false
          })
        }
        if (this.operateMaterial == 'edit') {
          materialNewsUpdate({
            articles: this.articlesAdd,
            mediaId: this.articlesMediaId,
            appId: this.checkAppId
          }).then(response => {
            this.addMaterialLoading = false
            this.dialogNewsVisible = false
            this.isActiveAddNews = 0
            this.articlesAdd = [
              {
                "title": '',
                "thumbMediaId": '',
                "author": '',
                "digest": '',
                "showCoverPic": '',
                "content": '',
                "contentSourceUrl": '',
                "needOpenComment": '',
                "onlyFansCanComment": '',
                "thumbUrl": ''
              }
            ]
            this.getPage(this.page)
          }).catch(() => {
            this.addMaterialLoading = false
          })
        }
      },
      subVideo() {
        this.$refs['uploadForm'].validate((valid) => {
          if (valid) {
            this.$refs.uploadVideo.submit()
          } else {
            return false
          }
        })
      },
      handleAddVideo() {
        this.dialogVideoVisible = true
      },
      handleEditNews(item) {
        this.hackResetEditor = false//销毁组件
        this.$nextTick(() => {
          this.hackResetEditor = true//重建组件
        })
        if (this.operateMaterial == 'add') {
          this.isActiveAddNews = 0
        }
        this.operateMaterial = 'edit'
        this.articlesAdd = JSON.parse(JSON.stringify(item.content.articles))
        this.articlesMediaId = item.mediaId
        this.dialogNewsVisible = true
      },
      handleAddNews() {
        this.hackResetEditor = false//销毁组件
        this.$nextTick(() => {
          this.hackResetEditor = true//重建组件
        })
        if (this.operateMaterial == 'edit') {
          this.isActiveAddNews = 0
          this.articlesAdd = [
            {
              "title": '',
              "thumbMediaId": '',
              "author": '',
              "digest": '',
              "showCoverPic": '',
              "content": '',
              "contentSourceUrl": '',
              "needOpenComment": '',
              "onlyFansCanComment": '',
              "thumbUrl": ''
            }
          ]
        }
        this.operateMaterial = 'add'
        this.dialogNewsVisible = true
      },
      beforeThumbImageUpload(file) {
        this.addMaterialLoading = true
        const isType = file.type === 'image/jpeg' || file.type === 'image/png' || file.type === 'image/gif' || file.type === 'image/bmp' || file.type === 'image/jpg';
        const isLt = file.size / 1024 / 1024 < 2
        if (!isType) {
          this.$message.error('上传图片格式不对!')
        }
        if (!isLt) {
          this.$message.error('上传图片大小不能超过2M!')
        }
        this.addMaterialLoading = false
        return isType && isLt;
      },
      beforeImageUpload(file) {
        this.tableLoading = true
        const isType = file.type === 'image/jpeg' || file.type === 'image/png' || file.type === 'image/gif' || file.type === 'image/bmp' || file.type === 'image/jpg';
        const isLt = file.size / 1024 / 1024 < 2
        if (!isType) {
          this.$message.error('上传图片格式不对!')
        }
        if (!isLt) {
          this.$message.error('上传图片大小不能超过2M!')
        }
        this.tableLoading = false
        return isType && isLt;
      },
      beforeVoiceUpload(file) {
        this.tableLoading = true
        const isLt = file.size / 1024 / 1024 < 2
        if (!isLt) {
          this.$message.error('上传语音大小不能超过2M!')
        }
        this.tableLoading = false
        return isLt;
      },
      beforeVideoUpload(file) {
        this.addMaterialLoading = true
        const isType = file.type === 'video/mp4'
        const isLt = file.size / 1024 / 1024 < 10
        if (!isType) {
          this.$message.error('上传视频格式不对!')
        }
        if (!isLt) {
          this.$message.error('上传视频大小不能超过10M!')
        }
        this.addMaterialLoading = false
        return isType && isLt;
      },
      delMaterial(item) {
        this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          this.tableLoading = true
          delObj({
            id: item.mediaId,
            appId: this.checkAppId
          }).then(() => {
            this.getPage(this.page)
            this.tableLoading = false
          }).catch(() => {
            this.tableLoading = false
          })
        })
      },
      handleUploadSuccess(response, file, fileList) {
        this.tableLoading = false
        this.addMaterialLoading = false
        if (response.code == 200) {
          this.dialogVideoVisible = false
          this.fileList = []
          this.uploadData.title = ''
          this.uploadData.introduction = ''
          if (this.materialType != 'news') {
            this.page.currentPage = 1
            this.getPage(this.page)
          } else {
            this.articlesAdd[this.isActiveAddNews].thumbMediaId = response.data.mediaId
            this.articlesAdd[this.isActiveAddNews].thumbUrl = response.data.url
          }
        } else {
          this.$message.error('上传出错：' + response.msg)
        }
      },
      handleClick(tab, event) {
        if (this.checkAppId) {
          this.getPage(this.page)
        } else {
          this.$message.error('请先选择公众号')
        }
        let materialType = tab.name
        this.page.currentPage = 1
        this.materialType = materialType
        this.uploadData.mediaType = materialType
        if (materialType == 'news') {
          this.uploadData.mediaType = 'image'
        }
      },
      getPage(page, params) {
        this.tableData = []
        this.tableLoading = true
        getPage(Object.assign({
          current: page.currentPage,
          size: page.pageSize,
          type: this.materialType,
          appId: this.checkAppId
        }, params)).then(response => {
          this.tableData = response.data.data.items
          this.page.total = response.data.data.totalCount
          this.page.currentPage = page.currentPage
          this.page.pageSize = page.pageSize
          this.tableLoading = false
        }).catch(() => {
          this.tableLoading = false
        })
      },
      sizeChange(val) {
        this.page.currentPage = 1
        this.page.pageSize = val
        this.getPage(this.page)
      },
      currentChange(val) {
        this.page.currentPage = val
        this.getPage(this.page)
      }
    }
  }
</script>

<style lang="scss" scoped>
  .tree-position {
    margin: 12px 20px 0 0
  }

  .pagination {
    float: right;
    margin-right: 25px;
  }

  .add_but {
    padding: 10px;
  }

  .ope-row {
    margin-top: 5px;
    text-align: center;
    border-top: 1px solid #eaeaea;
    padding-top: 5px;
  }

  .item-name {
    font-size: 12px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    text-align: center;
  }

  .el-upload__tip {
    margin-left: 5px;
  }

  /*新增图文*/
  .left {
    display: inline-block;
    width: 35%;
    vertical-align: top;
    margin-top: 200px;
  }

  .right {
    display: inline-block;
    width: 60%;
    margin-top: -40px;
  }

  .avatar-uploader {
    width: 20%;
    display: inline-block;
  }

  .avatar-uploader .el-upload {
    border-radius: 6px;
    cursor: pointer;
    position: relative;
    overflow: hidden;
    text-align: unset !important;
  }

  .avatar-uploader .el-upload:hover {
    border-color: #409EFF;
  }

  .avatar-uploader-icon {
    border: 1px solid #d9d9d9;
    font-size: 28px;
    color: #8c939d;
    width: 120px;
    height: 120px;
    line-height: 120px;
    text-align: center;
  }

  .avatar {
    width: 230px;
    height: 120px;
  }

  .avatar1 {
    width: 120px;
    height: 120px;
  }

  .digest {
    width: 60%;
    display: inline-block;
    vertical-align: top;
  }

  /*新增图文*/
  /*瀑布流样式*/
  .waterfall {
    width: 100%;
    column-gap: 10px;
    column-count: 5;
    margin: 0 auto;
  }

  .waterfall-item {
    padding: 10px;
    margin-bottom: 10px;
    break-inside: avoid;
    border: 1px solid #eaeaea;
  }

  p {
    line-height: 30px;
  }

  @media (min-width: 992px) and (max-width: 1300px) {
    .waterfall {
      column-count: 3;
    }
    p {
      color: red;
    }
  }

  @media (min-width: 768px) and (max-width: 991px) {
    .waterfall {
      column-count: 2;
    }
    p {
      color: orange;
    }
  }

  @media (max-width: 767px) {
    .waterfall {
      column-count: 1;
    }
  }

  /*瀑布流样式*/
  .news-main {
    background-color: #FFFFFF;
    width: 100%;
    margin: auto;
    height: 120px;
  }

  .news-content {
    background-color: #acadae;
    width: 100%;
    height: 120px;
    position: relative;
  }

  .news-content-title {
    display: inline-block;
    font-size: 15px;
    color: #FFFFFF;
    position: absolute;
    left: 0px;
    bottom: 0px;
    background-color: black;
    width: 98%;
    padding: 1%;
    opacity: 0.65;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    height: 25px;
  }

  .news-main-item {
    background-color: #FFFFFF;
    padding: 5px 0px;
    border-top: 1px solid #eaeaea;
    width: 100%;
    margin: auto;
  }

  .news-content-item {
    position: relative;
    margin-left: -3px
  }

  .news-content-item-title {
    display: inline-block;
    font-size: 12px;
    width: 70%;
  }

  .news-content-item-img {
    display: inline-block;
    width: 25%;
    background-color: #acadae
  }

  .input-tt {
    padding: 5px;
  }

  .activeAddNews {
    border: 5px solid #2bb673;
  }

  .news-main-plus {
    width: 280px;
    text-align: center;
    margin: auto;
    height: 50px;
  }

  .icon-plus {
    margin: 10px;
    font-size: 25px;
  }

  .select-item {
    width: 60%;
    padding: 10px;
    margin: 0 auto 10px auto;
    border: 1px solid #eaeaea;
  }

  .father .child {
    display: none;
    text-align: center;
    position: relative;
    bottom: 25px;
  }

  .father:hover .child {
    display: block;
  }

  .thumb-div {
    display: inline-block;
    width: 30%;
    text-align: center;
  }

  .thumb-but {
    margin: 5px;
  }

  .material-img {
    width: 100%;
    height: 100%;
  }
</style>
